From aa7e00fcb82392abae14ad431619bfdee882bafa Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 6 Mar 2014 18:59:40 +0100 Subject: [PATCH] popover: dispose popovers when unmanaging them This makes popovers get rid of dangling pointers at the time of destroying the relative-to widget, just in case these are kept alive by a reference. --- gtk/gtkpopover.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c index 7cadf982de..8e1c56b064 100644 --- a/gtk/gtkpopover.c +++ b/gtk/gtkpopover.c @@ -1383,6 +1383,13 @@ _gtk_popover_parent_size_allocate (GtkWidget *widget, gtk_popover_update_position (popover); } +static void +_unmanage_popover (GObject *object) +{ + g_object_run_dispose (object); + g_object_unref (object); +} + static void widget_manage_popover (GtkWidget *widget, GtkPopover *popover) @@ -1394,7 +1401,7 @@ widget_manage_popover (GtkWidget *widget, if (G_UNLIKELY (!popovers)) { popovers = g_hash_table_new_full (NULL, NULL, - (GDestroyNotify) g_object_unref, NULL); + (GDestroyNotify) _unmanage_popover, NULL); g_object_set_qdata_full (G_OBJECT (widget), quark_widget_popovers, popovers, (GDestroyNotify) g_hash_table_unref); -- 2.30.2